/*
 * @Author: lbt666 '1319451895@qq.com'
 * @Date: 2022-07-25 15:57:52
 * @LastEditors: lbt666 '1319451895@qq.com'
 * @LastEditTime: 2022-09-19 15:05:38
 * @Description: 全局工具文件
 */
import { Toast } from 'vant';
import 'vant/es/toast/style';

/**
 * 方法说明
 * @method 财务计数法
 * @param {value, type, mark} 数字 是否取整
 * @return {返回值类型} String
 */
export function NumFormat (value, type) {
  if (!value) return '0.00';
  var intPart = parseInt(value); //获取整数部分（这里是windy93的方法）
  var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
  var floatPart = ".00"; //预定义小数部分
  var value2Array = value.toString().split(".");
  // 传参表示取整
  if (type) return intPartFormat
  //=2表示数据有小数位
  if (value2Array.length == 2) {
    floatPart = (value2Array[1].substr(0, 4)).toString(); //拿到小数部分

    // if (floatPart.length == 1) { //补0,实际上用不着
    //   return intPartFormat + "." + floatPart + '0';
    // } else {
    return intPartFormat + "." + floatPart;
    // }
  } else {
    return intPartFormat
  }
}
/**
 * 方法说明
 * @method 时间戳转换年月日方法
 * @param {format, str, mark} 格式化字符串 秒 分隔符
 * @return {返回值类型} String
 */
export function getUnixToDate (format, str, mark = '.') {
  if (!str) return;
  if (str === '-') return '-'
  let stringLength = str.toString().length
  let oDate = new Date(parseInt(stringLength === 13 ? str : str * 1000)),
    oYear = oDate.getFullYear(),
    oMonth = oDate.getMonth() + 1,
    oDay = oDate.getDate(),
    oHour = oDate.getHours(),
    oMin = oDate.getMinutes(),
    oSec = oDate.getSeconds(),
    oTime = '';
  if (format == 'yyyy-mm-dd hh:mm:ss') {
    oTime = oYear + mark + getzf(oMonth) + mark + getzf(oDay) + ' ' + getzf(oHour) + ':' + getzf(oMin) + ':' + getzf(oSec);
  } else if (format == 'yyyy-mm-dd hh:mm') {
    oTime = oYear + mark + getzf(oMonth) + mark + getzf(oDay) + ' ' + getzf(oHour) + ':' + getzf(oMin);
  } else if (format == 'mm-dd hh:mm') {
    oTime = getzf(oMonth) + mark + getzf(oDay) + ' ' + getzf(oHour) + ':' + getzf(oMin);
  } else if (format == 'yyyy-mm-dd') {
    oTime = oYear + mark + getzf(oMonth) + mark + getzf(oDay);
  }
  return oTime
}
//补0操作  
function getzf (num) {
  if (parseInt(num) < 10) {
    num = '0' + num;
  }
  return num;
}
/**
 * 方法说明
 * @method 地址格式化
 * @param {str, frontLen, endLen, cha, chaNum} 字符串 起始 结束 标识 标识长度
 * @return {返回值类型} String
 */
export function plusXing (str, frontLen, endLen, cha, chaNum) {
  if (!str) return
  var len = chaNum || str.length - frontLen - endLen;
  var xing = '';
  for (var i = 0; i < len; i++) {
    xing += cha;
  }
  return str.substring(0, frontLen) + xing + str.substring(str.length - endLen);
}
/**
 * 方法说明
 * @method 复制
 * @param {val} String 要复制的字符串
 * @return {void}
 */
export function copy (val) {
  let domInput = document.createElement('input');
  domInput.value = val;
  document.body.appendChild(domInput);
  domInput.select();
  document.execCommand("Copy");
  Toast('复制成功')
  domInput.remove()
}
/**
 * 方法说明
 * @method 获取当前日期函数
 * @return {Object}
 */
export function getNowFormatDate () {
  let date = new Date(),
    year = date.getFullYear(), //获取完整的年份(4位)
    month = date.getMonth() + 1, //获取当前月份(0-11,0代表1月)
    strDate = date.getDate() // 获取当前日(1-31)
  if (month >= 1 && month <= 9) month = '0' + month // 如果月份是个位数，在前面补0
  if (strDate >= 0 && strDate <= 9) strDate = '0' + strDate // 如果日是个位数，在前面补0

  let currentdate = {
    year: year,
    month: month,
    strDate: strDate
  }
  return currentdate
}
/**
 * 方法说明
 * @method 计算两个日期距离的天数
 * @param {startTime, endTime} 字符串 '2022-03-05'
 * @return {返回值类型} Number
 */
export function spaceDate (startTime, endTime) {    //startTime和endTime是2006-12-18格式  
  let dateSpan,
    dates;
  startTime = Date.parse(startTime);
  endTime = Date.parse(endTime);
  dateSpan = endTime - startTime;
  dateSpan = Math.abs(dateSpan);
  dates = Math.floor(dateSpan / (24 * 3600 * 1000));
  return dates + 1
};
export function KeepDecimal (num, decimal = 2) {
  if (!(Number(num))) return 0
  return parseFloat(num.toFixed(decimal))
}
/**
 * 方法说明
 * @method 获取某天之后的时间
 * @param {day} number 间隔时间/天
 * @return {date} srting 时间
 */
export function queryDisTime (day) {
  let dateNow = Date.now()
  let dayTimp = day * 24 * 60 * 60 * 1000
  let afterTime = dateNow + dayTimp
  return getUnixToDate('yyyy-mm-dd', afterTime, '/')
}